public class code3 {
//    长度最小的子数组
public int minSubArrayLen(int target, int[] nums) {
    // 首先通过滑动窗口进行解决
    int len = nums.length;
    if(len == 0) {
        return 0;
    }

    // 定义一个标记参数，记录其中符合条件的最小长度
    int flag = Integer.MAX_VALUE;

    int slow = 0;
    int fast = 0;
    // 定义一个参数记录两个数字的和
    int sum = 0;
    while(fast < len) {
        // 让 fast 扫过的数组中的值进行相加操作
        sum += nums[fast];
        // 这里进行一个判断操作
        while(sum >= target) {
            // 此时就说明从 slow 到 fast 下的值就是符合题意的
            flag = Math.min(flag, fast - slow + 1);
            // 在记录结束后，就需要调整 slow 指针的位置
            // 并且将 sum 的值进行调整，以找到最合适的返回长度
            sum -= nums[slow];
            slow++;
        }
        fast++;
    }
    // 如果在上述的遍历中是没有合适长度的返回值
    // 呢么此时的 flag 中将仍然是 int 中的最大值
    if(flag == Integer.MAX_VALUE) {
        return 0;
    }
    return flag;
}
}
